/**
 * 用户访问权限设置
 */
 
  (function(){
 	var col = [{field:'fcode',align:'center',title:'工号',width:60},
			   {field:'fname',align:'center',title:'姓名',width:60},
			   {field:'fksname',align:'center',title:'科室',width:60, hidden: true},
			   {field:'fgroupname',align:'center',title:'用户组',width:80}]
	var col1 = [
				   {field:'FQXXT',align:'center',title:'允许访问系统',width:80},
				   {field:'FQXQSIP',align:'center',title:'IP起始地址',width:80},
				   {field:'FQXJSIP',align:'center',title:'IP结束地址',width:80},
				   {field:'FQSRQ',align:'center',title:'起始日期',width:60,
				   		formatter : function (value, row, index) {
				          return new Date(value).format("yyyy-MM-dd");
				      }},
				   {field:'FJSRQ',align:'center',title:'结束日期',width:60,
				   		formatter : function (value, row, index) {
				          return new Date(value).format("yyyy-MM-dd");
				      }}
				]
				
	var col2 = [
				   {field:'FJZXT',align:'center',title:'禁止访问系统',width:80},
				   {field:'FQXQSIP',align:'center',title:'IP起始地址',width:80},
				   {field:'FQXJSIP',align:'center',title:'IP结束地址',width:80},
				   {field:'FQSRQ',align:'center',title:'起始日期',width:60, 
				   		formatter : function (value, row, index) {
				          return new Date(value).format("yyyy-MM-dd");
				      }},
				   {field:'FJSRQ',align:'center',title:'结束日期',width:60,
				   		formatter : function (value, row, index) {
				          return new Date(value).format("yyyy-MM-dd");
				      }}
				]
	//根据选择用户加载该用户的访问权限   
 	$('#data-UserAccessAdress').datagrid({  
 		toolbar : "#toolbar-UserAccessAdress", 
		fitColumns : true,
		border : false,
		striped : true,
		fit : true,
		singleSelect : true,
		pagination : true,
		pageSize : 20,
		pageList : [ 20, 30, 50 ],
		columns : [col1]
 	})
 	
 	//加载系统所有的权限设置
 	$('#data-SystemAccessAdress').datagrid({  
 		toolbar : "#toolbar-SystemAccessAdress", 
 		url : "systemMaintenance/loadSystemAccessAdr",
		fitColumns : true,
		border : false,
		striped : true,
		fit : true,
		singleSelect : true,
		pagination : true,
		pageSize : 20,
		pageList : [ 20, 30, 50 ],
		columns : [col2]
 	})
 	
 	//加载全部用户
 	$('#data-AccessUsers').datagrid({     
 		url : "systemMaintenance/findUsers",
 		toolbar : "#toolbar-AccessUsersUser",
		fitColumns : true,
		border : false,
		striped : true,
		fit : true,
		singleSelect : true,
		pagination : true,
		pageSize : 20,
		pageList : [ 20, 30, 50 ],
		onClickRow : showUserPermision,
		columns : [col],
		onLoadError : errorPromt
 	})
 	
 	$('#isLimit').combobox({
 		valueField:'id',
		textField:'name',
		panelHeight : 100,
		width : 80,
		data: [{'id': 1,'name': '全部'},{'id': 2,'name': '已限制'},{'id': 3,'name': '未限制'}],
		onLoadSuccess : function(data){
			$('#isLimit').combobox('select',data[0].id);  //默认勾选全部
		}
 	})
 	
 	//加载所有系统
 	$("#system-name").combobox({
		url : "systemMaintenance/findSystemInfo",
		valueField:'fsysflag',
		textField:'fname',
		onLoadSuccess : function(data) {
			if (data.length > 0) {
				$("#system-name").combobox("select", data[data.length-1].fsysflag);
			}
		}
	});
 	
})();

var systemItems;  //保存当前点击的系统权限数据
var userDictionItems;  //保存当前点击的用户系统权限数据
var userItems;     //保存当前用户的信息

//打开系统权限设置或用户权限设置界面
function OpenSettingsDialog(name,type){
	$('#AccessPermsSetting-form').form('clear');
	//代表添加或修改 系统权限
	if (type == 0) {
		$('#showAccess-Prohibit').text('禁止访问系统');//允许或禁止访问系统
		
		//操作修改系统权限
		if (name == '修改'){
			var items = $('#data-SystemAccessAdress').datagrid('getSelected');  //获取选中的数据
			if (items == null) {
				$.messager.alert('提示','请选择相应的数据进行修改','info');
				return;
			}
			
			//将数据保存全局变量中
			systemItems = items;
			
			//格式化起始和结束日期
			items.FQSRQ = new Date(items.FQSRQ).format("yyyy-MM-dd");
			items.FJSRQ = new Date(items.FJSRQ).format("yyyy-MM-dd");
			
			$('#AccessPermsSetting-form').form('load',items);  //将数据加载到form表单中
			$("#system-name").combobox('select',items.FCODE);
		}
	}else{
		var userItem = $('#data-AccessUsers').datagrid('getSelected');  //获取选中的用户信息
		if (userItem == null) {
			$.messager.alert('提示','请先选择对应用户进行操作','info');
			return;
		}
		userItems = userItem;
		
		$('#showAccess-Prohibit').text('允许访问系统');
		
		//操作修改个人权限
		if (name == '修改'){
			var items = $('#data-UserAccessAdress').datagrid('getSelected');  //获取选中的数据
			if (items == null) {
				$.messager.alert('提示','请选择相应的数据进行修改','info');
				return;
			}
			
			userDictionItems = items;
			
			//格式化起始和结束日期
			items.FQSRQ = new Date(items.FQSRQ).format("yyyy-MM-dd");
			items.FJSRQ = new Date(items.FJSRQ).format("yyyy-MM-dd");
			
			$('#AccessPermsSetting-form').form('load',items);  //将数据加载到form表单中
			$("#system-name").combobox('select',items.FXTCODE);
		}
	}
	
	$('#AccessPermsSetting-dialog').dialog({
		closed : false,
		modal : true,
		title : name+'权限',
		buttons : [{
			text: '确定',
			handler: function(){confirmSettingsPermis(name, type)}
		},
		{text: '取消',handler: function() {
			$("#AccessPermsSetting-dialog").dialog("close");
		}
		}]
	})
	
}

//根据条件检索用户
function searchAccessUser(){
	var isLimit = $('#isLimit').combobox('getValue');//根据权限分类获取用户  是否已经分配权限
	var nameOrNum = $("#userCode-Name").val();  // 用户工号或姓名
	$('#data-AccessUsers').datagrid({
		url : "systemMaintenance/findUsers",
		queryParams : {
			nameOrNum: nameOrNum,
			isLimit: isLimit
		},
		onLoadError : errorPromt
	});
}

//根据用户点击显示用户的权限
function showUserPermision(index,row){
	UserItem = row;
	$('#data-UserAccessAdress').datagrid({
		url : "systemMaintenance/getUserAccessPermis",
		queryParams : {
			fcode: row.fcode
		},
		onLoadError : errorPromt
	});
}
var UserItem;       //保存上次的用户信息

//确认添加或修改权限信息   type 0 系统  1  个人
function confirmSettingsPermis(name, type){
	
	var fqxqsip = $('#FQXQSIP').val();   //获取权限起始ip地址
	var fqxjsip = $('#FQXJSIP').val();   //获取权限结束ip地址
	var systemFlag = $("#system-name").combobox('getValue');  //获取选中的系统 value值
	
	if ("" == fqxqsip || fqxqsip == null || "" == fqxjsip || fqxjsip == null) {
		$.messager.alert('提示','ip地址不能为空','info');
		return;
	}
	
	if (!IsIpAddress(fqxjsip) || !IsIpAddress(fqxqsip)) {
		$.messager.alert('提示','非正确格式ip地址','info');
		return;
	}
	
	var beginValueArra = fqxqsip.split('.');  //分割起始ip地址
	var endValueArra = fqxjsip.split('.');  //分割结束ip地址
	var beginValue = beginValueArra[beginValueArra.length-1];//获取起始ip地址末尾  数字
	var endValue = endValueArra[endValueArra.length-1];//获取结束ip地址末尾  数字
	
	//判断如果起始ip大于结束ip地址 (将字符串类型转为int类型进行比较)
	if (parseInt(beginValue)>parseInt(endValue)) {
		$.messager.alert('提示','起始ip地址不能大于结束ip地址','info');
		return;
	}
	
	//获取权限设置的起始和结束日期
	var startDate = $('input[name="FQSRQ"]').val();
	var endDate = $('input[name="FJSRQ"]').val();
	if (Date.parse(startDate) > Date.parse(endDate)) {   //将日期转换为时间戳进行比较
		$.messager.alert('提示','起始日期不能大于结束日期','info');
		return;
	}
	
	//检测 起始ip 和结束ip地址方法
	if (CheckUserSystemAccess(parseInt(beginValue), parseInt(endValue), startDate, endDate, type, name, systemFlag) == 1) {
		$.messager.alert('提示','该ip访问区间已经在列表中存在','info');
		return;
	}
	
	//检测 起始ip 和结束ip地址方法
	if (CheckUserSystemAccess(parseInt(beginValue), parseInt(endValue), startDate, endDate, type, name, systemFlag) == 2) {
		$.messager.alert('提示','该日期段访问区间已经在列表中存在','info');
		return;
	}
	if ("" == systemFlag || systemFlag == null) {
		$.messager.alert('提示','系统名称不能为空','info');
		return;
	}
	
	var urlStr = "";  //请求地址
	var datas;		  //额外参数
	
	//代表添加或修改   用户  权限设置
	if (type == 1) {
		if (name == '添加') {
			urlStr = "systemMaintenance/saveAccessSettings";
			datas = $('#AccessPermsSetting-form').serialize() + "&fusercode=" + userItems.fcode;
		}else{
			urlStr = "systemMaintenance/updateAccessSettings";
			datas = $('#AccessPermsSetting-form').serialize() + "&id=" + userDictionItems.FID;
		}
	
	//代表添加或修改   系统  权限设置
	}else{
		if (name == '添加') {
			urlStr = "systemMaintenance/saveSystemSettings";
			datas = $('#AccessPermsSetting-form').serialize();
		}else{
			urlStr = "systemMaintenance/updateSystemSettings";
			datas = $('#AccessPermsSetting-form').serialize() + "&id=" + systemItems.FID;
		}
	}
	
	$.ajax({
		url : urlStr,
		dataType : 'json',
		type : 'post',
		data : datas,
		success : function(data){
			if (data) {
				$.messager.alert('提示',name+'成功','info');
				
				if (type == 0) {
					$('#data-SystemAccessAdress').datagrid('reload');   //刷新系统权限表
				}else{
					$('#data-UserAccessAdress').datagrid('reload');    //刷新用户相应权限设置表
				}
				
				$("#AccessPermsSetting-dialog").dialog("close");
			}else{
				$.messager.alert('提示',type+'失败','info');
			}
		},error : errorPromt
	})
	
}

//根据权限id删除访问权限
function DeleteAccessAdress(type){
	var items = "";
	if (type == 0) {
		items = $('#data-SystemAccessAdress').datagrid('getSelected');//获取已选择的权限信息
	}else{
		items = $('#data-UserAccessAdress').datagrid('getSelected');//获取已选择的权限信息
	}
	
	if (items == null) {
		$.messager.alert('提示','未选中要删除的权限','info');
		return;
	}
	
	$.messager.confirm('确认对话框', '确定要删除该条记录吗？', function(r){
		if (r){
			$.ajax({
	 			url : "systemMaintenance/DeleteAccessAdressById",
	 			dataType : 'json',
	 			type : 'post',
	 			data : {fid : items.FID},
	 			success : function(data){
	 				if (data) {
	 					$.messager.alert('提示','删除成功','info');
	 					if (type == 0) {
							$('#data-SystemAccessAdress').datagrid('reload');   //刷新系统权限表
						}else{
							$('#data-UserAccessAdress').datagrid('reload');    //刷新用户相应权限设置表
						}
	 				}else{
	 					$.messager.alert('提示','删除失败','info');
	 				}
	 			},error : errorPromt
 		    })
		}
	});
	
}

//获取所有局域网内ip地址和主机
function getAllAdress(){
	$.ajax({
		url : "systemMaintenance/getAllAdress",
		dataType : 'json',
		type : 'post',
		success : function(data){
			$('#getLanIp-dialog').dialog({
				closed : false,
				modal : true,
				title : 'ip列表',
				buttons : [{
					text: '确定',
					handler: function(){confirmSelectLanIp()}
				},
				{text: '取消',handler: function() {
					$("#getLanIp-dialog").dialog("close");
				}
					}]
			})
			$('#data-LanIp').datagrid({
				fitColumns : true,
				data : data,
				columns : [ [
					 {field: 'ip', title: 'IP地址', width: 100, align: 'center'}, 
					 {field: 'hostname', title: '主机名', width: 60, align: 'center',hidden: true}
					  ] ]
			});	
			
		},error : errorPromt
    })
}

//选择ip后确认事件
function confirmSelectLanIp(){
	var row = $('#data-LanIp').datagrid('getSelected');  //获取选择的IP地址
	if (row == null) {
		$.messager.alert('提示','为选择任何记录','info');
		return;
	}
	$('#FQXIP').textbox('setValue',row.ip);  //将ip输入到    ip地址输入框中
	$("#getLanIp-dialog").dialog("close");
}

//根据用户工号和ip地址验证是否存在形同的ip地址  name:判断添加或修改       systemFlag:系统类型编号
function CheckUserSystemAccess(newBeginValue, newEndValue, newStartDate, newEndDate, type, name, systemFlag){
    var countIp=0;   //判断存在相同ip地址区间次数
    var countDate=0; //判断存在相同日期区间次数
    
    var b=0;  //返回值  1：存在相同的ip地址区间   2：存在相同的日期区间
    
    var urlStr = "";   //请求地址
    var datas = "";    //请求参数
    var items;         //存放点击的系统权限数据   或者  用户权限数据
    
    var operation = 0;  //传入后台  区分修改还是添加操作 进行查询 
    if (name == '修改') {
    	operation = 1;
    }
    //判断设置系统ip地址
    if (type == 0) {
    	items = systemItems;
    	urlStr = "systemMaintenance/getAllSystemIp";
    	
    	var fid = name == '添加'?'':items.FID;
	    datas = {fcode: systemFlag, operation: operation, fid: fid};
    }else{
    	items = userDictionItems;
    	urlStr = "systemMaintenance/getAllUserIp";
    	
    	var fid = name == '添加'?'':items.FID;
    	datas = {fcode : UserItem.fcode, fxtcode: systemFlag, operation: operation, fid: fid};
    }
    
    $.ajax({
    	url : urlStr,
    	async : false,
		dataType : 'json',
		type : 'post',
		data : datas,
		success : function(data){
			for (var i = 0; i < data.length; i++) {
				var beginipArra = data[i].FQXQSIP.split('.');  //分割起始ip地址
				var endipArra = data[i].FQXJSIP.split('.');  //分割结束ip地址
				var databeginV = parseInt(beginipArra[beginipArra.length-1]); //获取该ip地址末尾数字
				var endbeginV = parseInt(endipArra[endipArra.length-1]); //获取该ip地址末尾数字
				//判断输入框中的起始ip末尾数字  和结束 ip末尾数字 是否存在该区间内
				if (newBeginValue >= databeginV && newBeginValue <= endbeginV || 
				     (newEndValue >= databeginV && newEndValue <= endbeginV)) {
					countIp ++;
					break;
				}
				
				//判断添加的日期范围是否在列表中存在相同的
				if (newStartDate >= data[i].FQSRQ && newStartDate <= data[i].FJSRQ || 
				     (newEndDate >= data[i].FQSRQ && newEndDate <= data[i].FJSRQ)) {
					countDate ++;
					break;
				}
			}
		    //判断编码，名称和排序是否唯一
		    if (countIp !=0 ) {
				b = 1;
		    }else if (countDate !=0 ) {
		    	b = 2;
		    }
		},error : function(){
			$.messager.alert('提示','后台程序出错','info');
		}
    })
	return b;
}